//
//  WSQHttpRequest.h
//  WSQOCTools
//
//  Created by 翁胜琼 on 2019/1/18.
//  Copyright © 2019 Dev John. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSUInteger, HttpRequestTokenType) {
    HttpRequestTokenTypeNone = 0,
    HttpRequestTokenTypeAnonymous = 1,
    HttpRequestTokenTypeAccessToken = 2,
    HttpRequestTokenTypeNeutralToken = 3    // 中立token，当用户登录后，使用的 token 为 accesstoken，未登录为 AnonymousToken
};

@interface WSQHttpRequest : NSObject

/**
 post 方法
 
 @param url 请求路径
 @param parameters  请求参数，无参数传 nil
 @param tokenType token 类型
 @param success 成功回调
 @param failure 失败回调
 */
+ (void)POST:(NSString *)url
  parameters:(NSDictionary *)parameters
       token:(HttpRequestTokenType)tokenType
     success:(void (^)(id response))success
     failure:(void (^)(NSError * error , NSInteger statusCode))failure;


/**
 GET 方法
 
 @param url 请求路径
 @param parameters 请求参数，无参传 Nil
 @param tokenType token 类型
 @param success 成功回调
 @param failure 失败回调
 */
+ (void)GET:(NSString *)url
 parameters:(NSDictionary *)parameters
      token:(HttpRequestTokenType)tokenType
    success:(void (^)(id _Nonnull response))success
    failure:(void (^)(NSError * _Nonnull error, NSInteger statusCode))failure;

/**
 PUT 方法
 
 @param url 请求路径
 @param parameters 请求参数，无参传 Nil
 @param tokenType token 类型
 @param success 成功回调
 @param failure 失败回调
 */
+ (void)PUT:(NSString *)url
 parameters:(NSDictionary *)parameters
      token:(HttpRequestTokenType)tokenType
    success:(void (^)(id _Nonnull response))success
    failure:(void (^)(NSError * _Nonnull error, NSInteger statusCode))failure;

/**
 DELETE 方法
 
 @param url 请求路径
 @param parameters 请求参数，无参传 Nil
 @param tokenType token 类型
 @param success 成功回调
 @param failure 失败回调
 */
+ (void)DELETE:(NSString *)url
    parameters:(NSDictionary *)parameters
         token:(HttpRequestTokenType)tokenType
       success:(void (^)(id _Nonnull response))success
       failure:(void (^)(NSError * _Nonnull error, NSInteger statusCode))failure;
@end

NS_ASSUME_NONNULL_END
